package com.example.backend.mapper;

import com.example.backend.entity.StockRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;

@Mapper
public interface StockRecordMapper {
    int insert(StockRecord stockRecord);
    StockRecord selectById(Long id);
    List<StockRecord> selectAll();
    int update(StockRecord stockRecord);
    int deleteById(@Param("id") Long id);
    
    // 根据入库记录ID获取库存记录
    List<StockRecord> selectByInId(Long inId);
    
    // 根据公司和港口获取有库存的记录（FIFO排序）
    List<StockRecord> selectAvailableByCompanyAndPort(@Param("companyId") Long companyId, @Param("portId") Long portId);
    
    // 根据仓库ID获取库存记录
    List<StockRecord> selectByWarehouseId(Long warehouseId);
    
    // 根据公司ID获取库存记录
    List<StockRecord> selectByCompanyId(Long companyId);
    
    // 更新库存记录（出库时减少剩余重量）
    int updateRemainingWeight(@Param("id") Long id, @Param("newRemainingWeight") BigDecimal newRemainingWeight);
    
    // 获取指定入库记录的剩余重量
    BigDecimal selectRemainingWeightByInId(Long inId);
} 